¿Cómo puedo cambiar el mapeo o mi entrada para resolver estos errores usando elasticsearch en AWS?
Cartografía:
{ "index_patterns": ["*-students-log"], "mappings": { "properties": { "Data": { "type": "object", "properties": { "PASSED": { "type": "object" } } }, "insertion_timestamp": { "type": "date", "format": "epoch_second" } } } }Mis datos :
curl -XPOST -H 'Content-Type: application/json' https://******.us-east-1.es.amazonaws.com/index_name/_doc/1 -d '{"Data": {"PASSED": ["Vivek"]},"insertion_timestamp": 1591962493}'Error que tengo:
{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"object mapping for [Data.PASSED] tried to parse field [null] as object, but found a concrete value"}],"type":"mapper_parsing_exception","reason":"object mapping for [Data.PASSED] tried to parse field [null] as object, but found a concrete value"},"status":400}¿Cuál es la pieza faltante o incorrecta en los datos anteriores? ¿Hay algún otro tipo de datos que deba usar para la matriz de cadenas? Cualquier ayuda sería apreciada...
Los arreglos JSON no se consideran objetos JSON cuando se incorporan a Elasticsearch.
Los documentos establecen lo siguiente con respecto a las matrices :
No hay un tipo de datos de matriz dedicado. Cualquier campo puede contener cero o más valores de forma predeterminada, sin embargo, todos los valores de la matriz deben ser del mismo tipo de datos.
Entonces, en lugar de declarar la matriz completa como un object , especifique el tipo de datos ( text ) de las entradas de la matriz directamente:
PUT abc-students-log { "mappings": { "properties": { "Data": { "type": "object", "properties": { "PASSED": { "type": "text" } } }, "insertion_timestamp": { "type": "date", "format": "epoch_second" } } } } POST abc-students-log/_doc { "Data": { "PASSED": [ "Vivek" ] }, "insertion_timestamp": 1591962493 }